package com.yellow.chatservice.vo.results;

import com.alibaba.fastjson.JSONObject;
import com.yellow.chatservice.entity.Result;
import com.yellow.chatservice.enums.ResultsEnum;

/**
 * @author: hy
 * @create: 2024-02-17
 */
public class Results<T> {
    /**
     * 自定义生成结果
     */
    public static <T> Result buildResults(int status,String message,T data){
        Result result = new Result();
        result.setStatus(status);
        result.setMessage(message);
        String jsonString = JSONObject.toJSONString(data);
        if(jsonString.startsWith("\"") && jsonString.endsWith("\"")){
            jsonString = jsonString.substring(1,jsonString.length()-1);
        }
        result.setData(jsonString);
        return result;
    }

    /**
     * 生成成功结果 3 parameter
     */
    public static <T> Result success(int status,String message,T data){
        return buildResults(status,message,data);
    }

    /**
     * 生成成功结果 2 parameter
     */
    public static <T> Result success(int status,String message){
        return buildResults(status,message,true);
    }

    /**
     * 生成成功结果 1 parameter
     */
    public static <T> Result success(T data){
        return buildResults(ResultsEnum.SUCCESS_STATUS_CODE,ResultsEnum.SUCCESS_MESSAGE,data);
    }

    /**
     * 生成成功结果 0 parameter
     */
    public static <T> Result success(){
        return (Result)success(true);
    }

    /**
     * 生成失败结果 3 parameter
     */
    public static <T> Result error(int status,String message,T data){
        return buildResults(status,message,data);
    }

    /**
     * 生成失败结果 2 parameter
     */
    public static <T> Result error(int status,String message){
        return buildResults(status,message,false);
    }

    /**
     * 生成失败结果 1 parameter
     */
    public static <T> Result error(T data){
        return buildResults(ResultsEnum.FAIL_STATUS_CODE,ResultsEnum.FAIL_MESSAGE,data);
    }

    /**
     * 生成失败结果 0 parameter
     */
    public static <T> Result error(){
        return (Result)success(false);
    }

}
